The present application relates generally to testing integrated circuits and, in particular, to techniques for built-in self-tests for encoded logic in an integrated circuit.
During the manufacturing process of integrated circuits (or “chips”), defects may occur. Testing of various combinations of paths across the chips using fault models is used to detect defects in logic of the chips. There is an increasing amount of error checking and correcting (ECC) protected logic in chips and, by its nature, it is difficult to fully test the logic with random pattern testing. ECC codes deliberately increase the code space to add enough capability to correct from some known failure. This results in random patterns asserted on the additional check bits that may result in error states. Through random pattern logic testing, the odds of having a correct ECC check bit pattern for a set of data is very small. Thoroughly testing the ECC protected logic is highly important. With random testing, the vast majority of the time, the logic is exercised with the incorrect check-bits; however, the ECC protected logic needs to be tested at least some of the time with the correct ECC pattern.
Logic built-in self-test (LBIST) is a test method where a device under test (e.g., a chip) is initialized and then tests itself using a test clock(s). The clocking can be controlled via a tester or it can be programmed into on-product control logic (OPCL) within the chip. In this situation, only a reference clock is needed. LBIST is highly efficient in both tester time and memory usage and is also extendable to all packaging levels including a customer's environment. LBIST can be used to thoroughly test all the random logic on a chip including the ECC logic.
The chip may be configured in a self-test using MISRs and PRPGs (STUMPS) configuration where the chip is configured into short scan chains. Each scan channel is fed by a pseudo-random pattern generator (PRPG) and the scan unload is collected in a multi-input signature register (MISR).
Once the device under test is initialized and configured, the LBIST engine loads the channels from the PRPG and executes a clock sequence. While the responses from the clock sequence are unloaded into the MISR, new values are loaded into the channels from the PRPG.